// pages/login/login.js
const apiService = require('../../utils/apiService.js');

Page({
  data: {
    loginLoading: false,
    showTermsPopup: false,
    showPrivacyPopup: false,
    termsAccepted: false
  },

  onLoad(options) {
    // 使用统一的登录守卫
    const authGuard = require('../../utils/authGuard.js');
    
    // 检查是否已经登录
    this.checkLoginStatus();
  },

  onShow() {
    // 每次显示页面时检查登录状态
    this.checkLoginStatus();
  },

  // 检查登录状态
  checkLoginStatus() {
    const token = apiService.getToken();
    if (token) {
      // 已经登录，跳转到首页
      this.redirectToHome();
    }
  },

  // 微信授权登录
  async onWechatLogin() {
    
    if (this.data.loginLoading) {
      return;
    }

    // 不再强制要求同意服务条款，用户可以自主选择

    this.setData({ loginLoading: true });

    try {
      // 获取微信登录code
      const loginRes = await this.getWxLoginCode();
      // console.log('获取到的登录code:', loginRes.code);
      
      // 获取微信用户信息
      const userInfo = await this.getWxUserInfo();

      // 调用API登录
      // console.log('准备调用API登录，code:', loginRes.code);
      const loginData = await apiService.login(loginRes.code, userInfo);
      
      // 保存用户信息到全局
      const app = getApp();
      app.setLoginStatus(true, loginData.user);
      
      // 显示成功提示
      wx.showToast({
        title: '登录成功',
        icon: 'success',
        duration: 1500
      });

      // 延迟跳转
      setTimeout(() => {
        this.redirectToHome();
      }, 1500);
      
    } catch (error) {
      // console.error('登录错误:', error);
      
      // 显示错误提示
      let errorMessage = '登录失败，请重试';
      
      if (error.message && error.message.includes('取消授权')) {
        errorMessage = '已取消授权';
      } else if (error.message && error.message.includes('网络')) {
        errorMessage = '网络连接失败';
      } else if (error.code === 40001) {
        errorMessage = '微信授权失败';
      } else if (error.message && error.message.includes('500')) {
        errorMessage = '服务器错误，请稍后重试';
      }
      
      wx.showToast({
        title: errorMessage,
        icon: 'none',
        duration: 2000
      });
      
    } finally {
      this.setData({ loginLoading: false });
    }
  },

  // 游客模式登录
  onGuestLogin() {
    if (this.data.loginLoading) return;

    // 不再强制要求同意服务条款，用户可以自主选择
    // 直接跳转到游客模式页面
    wx.navigateTo({
      url: '/pages/guest/guest'
    });
  },

  // 获取微信登录code
  getWxLoginCode() {
    return new Promise((resolve, reject) => {
      wx.login({
        success: (res) => {
          // console.log('微信登录成功:', res);
          if (res.code) {
            resolve(res);
          } else {
            // console.error('获取登录code失败:', res);
            reject(new Error('获取登录code失败'));
          }
        },
        fail: (error) => {
          // console.error('微信登录失败:', error);
          reject(new Error('微信登录失败: ' + error.errMsg));
        }
      });
    });
  },

  // 获取微信用户信息
  getWxUserInfo() {
    return new Promise((resolve, reject) => {
      // 检查是否已经授权
      wx.getSetting({
        success: (res) => {
          if (res.authSetting['scope.userInfo']) {
            // 已经授权，直接获取用户信息
            wx.getUserInfo({
              success: (userRes) => {
                // console.log('获取到微信用户信息:', userRes.userInfo);
                resolve(userRes.userInfo);
              },
              fail: (error) => {
                // console.log('获取用户信息失败，使用默认信息:', error);
                // 如果获取失败，使用默认用户信息
                resolve({
                  nickName: '微信用户',
                  avatarUrl: 'https://img.yzcdn.cn/vant/cat.jpeg'
                });
              }
            });
          } else {
            // 未授权，使用默认用户信息
            // console.log('用户未授权，使用默认信息');
            resolve({
              nickName: '微信用户',
              avatarUrl: 'https://img.yzcdn.cn/vant/cat.jpeg'
            });
          }
        },
        fail: (error) => {
          // console.log('检查授权状态失败，使用默认信息:', error);
          // 检查失败，使用默认用户信息
          resolve({
            nickName: '微信用户',
            avatarUrl: 'https://img.yzcdn.cn/vant/cat.jpeg'
          });
        }
      });
    });
  },

  // 跳转到首页
  redirectToHome() {
    wx.reLaunch({
      url: '/pages/index/index'
    });
  },

  // 显示用户协议
  showTerms() {
    this.setData({ showTermsPopup: true });
  },

  // 隐藏用户协议
  hideTerms() {
    this.setData({ showTermsPopup: false });
  },

  // 显示隐私政策
  showPrivacy() {
    this.setData({ showPrivacyPopup: true });
  },

  // 隐藏隐私政策
  hidePrivacy() {
    this.setData({ showPrivacyPopup: false });
  },

  // 切换服务条款同意状态
  toggleTermsAccept() {
    this.setData({
      termsAccepted: !this.data.termsAccepted
    });
  },

  // 阻止事件冒泡
  stopPropagation() {
    // 空方法，用于阻止事件冒泡
  },

  // 页面分享
  onShareAppMessage() {
    return {
      title: '聚点 - 让聚餐点餐变得简单有趣',
      path: '/pages/index/index',
      imageUrl: '/images/order.png'
    };
  },

  // 分享到朋友圈
  onShareTimeline() {
    return {
      title: '聚点 - 让聚餐点餐变得简单有趣',
      imageUrl: '/images/order.png'
    };
  }
});
